/**
 * Copyright (c)  HeiFeiDeFengZheng.Co.Ltd. All rights reserved.
 **/
package com.dexing.od2;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Scanner;
import java.util.stream.Collectors;

/**
 *  贫如洗的樵夫 最大值，并输出该最大值。
 *  输入描述
 *  第一行输入一个数字字串，数字之间使用逗号分隔，例如: 2,10,-3,-8,40,5。
 *  1≤字串中数字的个数≤100000
 *  -10000≤每个数字≤10000
 *  第二行输入咒语数字，例如: 4，咒语数字大小小于宝箱的个数
 *  输出描述 连续k个宝箱数字和的最大值，例如: 39
 *  示例1：
 *  输入
 *  2,10,-3,-8,40,5
 *  4
 *  输出
 *  39 
 *   
 *  示例2： 输入 
 *  8 
 *  1
 *  输出
 *  8
 *
 * @author huifeidefengzheng
 * @since 2023-10-14
 *
 **/
public class D0801GetMaxNum {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[] nums = Arrays.stream(scanner.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();
        int k = Integer.parseInt(scanner.nextLine());

        System.out.println(maxnumSubarraySum(nums,k));
        return;
    }

    private static long maxnumSubarraySum(int[] nums, int k) {
        int n = nums.length;
        long rest = 0, sum = 0;
        HashMap<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < k; i++) {
            sum += nums[i];
            map.put(nums[i], map.getOrDefault(nums[i], 0) + 1);
        }

        if (map.size() == k) {
            rest = Math.max(rest, sum);
        }
        for (int i = k; i < n; i++) {
            // 右指针右移
            sum += nums[i];
            map.put(nums[i], map.getOrDefault(nums[i], 0) +1);

            //左指针右移
            sum -= nums[i-k];
            int count = map.get(nums[i - k]);

            if ( count == 1) {
                map.remove(nums[i - k]);
            } else {
                map.put(nums[i - k] , count-1);
            }

            if (map.size() == k) {
                rest = Math.max(rest, sum);
            }
        }
        return rest;

    }
}
